File sharing is the means by end-users can pool storage in order to create a very large repository. An end-user computer device—i.e. in general an electronic device that provides storing capacity and network access—can serve as data server with all or part of its stored data to other end-user computer devices when performing a file sharing application. Simultaneously, such computer device can query for files from other end-user computer devices and therefore obtain access to a large data repository that is stored across the connected end-user computer devices. This file sharing architecture is therefore different to common client/server systems where only dedicated server computers provide data for access to computer clients.
Nevertheless, computer devices performing file sharing applications are also called clients below due to their property of being clients to a file sharing application. File sharing applications in general vary in the means by which users/computer devices learn of the location of a file and request its copy.
In one form of file sharing applications, a central index is kept on a central index server. This index indicates which users are currently active and what files they currently possess. The economies of scale that a file sharing application with such central index engenders are huge with regard to storage and bandwidth that have to be provided.
For reasons of efficiency and resilience, an index can be distributed across multiple servers. Each server maintains an index that is part of the overall index. Sometimes, such index server has a reference which other index server to address to when it does not possess the relevant part of information itself. Such a link from one index server to another index server is not necessarily serving a quick file transfer since the known index server to address to for further information might be an index server located far away from the requesting index server and might provide information on clients that are also physically located in another part of the world than the requesting client. Even when such far remote index server might provide the requested information and provide a far remote client address that offers the queried file for download, such download would then a take long time and claim lots of network resources since requesting and serving client are located far from each other.
Therefore, it is appreciated to provide a mechanism that enables a client to obtain a file required from another client that has the required file available and is nearby.
U.S. Pat. No. 5,941,956 discloses a network system, in which a plurality of computers are connected to a network at a plurality of connectors, and a plurality of address conversion devices are provided in correspondence to the connectors. In each address conversion device a fixed address on the network corresponding to each address conversion device is stored while a computer address of one computer connected at one connector corresponding to each address conversion device is acquired and stored. Then, a source address contained in a message transmitted from that one computer to the network given in terms of the computer address is converted into the stored fixed address, while a destination address contained in a message transmitted from the network to that one computer given in terms of the fixed address is converted into the stored computer address.
Product announcement retrieved on the Internet http://www.itmcenter.com/vendors/radware.htm and accessed Nov. 26, 2002 shows a Web server that manages intelligent load balancing and proximity-based geographic redirection for classical client/server network topologies. Network traffic might be redirected between sites according to network proximity and actual load.
“Content delivery networks” by Mont Francisco, retrieved on the Internet http://www.newarchitectmag.com/archives/2001/03/francisco/ and accessed Nov. 26, 2002, describes a wide area traffic manager that directs content requests to the most appropriate location.
“Reduce network traffic with Web caching” by Rawn Shaw, September 1999, retrieved on the Internet http://www-106.ibm.com/developerworks/library/webcachinga.html and accessed Nov. 26, 2002, shows Web caches that aggregate all individual requests for a Web page and sends a single request as their proxy to the origin site. When the cache receives its copy of the contents, it then makes further copies and passes them on to the requesting users.